package com.rc.evcharger.common.config;

import org.quartz.SchedulerException;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;

/**
 * 1、由于这些Quartz SchedulerFactoryBean创建的线程最后能够得以关闭，因此Tomcat进程也能被正常关闭，
 * 在有些情形中，Tomcat进程内的线程不能得以关闭，那么Tomcat进程也不能被正常关闭，只能通过kill命令，强行杀死进程
 * 2、这个问题已经在Quartz 2.1上修复
 * Created by sven on 2018-03-20
 */
public class SchedulerFactoryBeanWithShutdownDelay extends SchedulerFactoryBean {
    /**
     * 关于Quartz内存泄漏的不太美观的解决方案：
     * 在调用scheduler.shutdown(true)后增加延时，等待worker线程结束。
     */
    @Override
    public void destroy() throws SchedulerException {
        super.destroy();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}
